Application sharing technologies allow computers to share data of interest between two or more users. Data generated by a sharing computer can include text or images for display and viewing by remote users. In some instances, remote users can share control of the data, permitting modifications to the data which can then be viewed at the sharing computer and any other remote computers, enabling users to collaborate on projects and tasks where joint decisions are desirable. Thus application sharing enables efficient collaboration between remote users working on a wide variety of tasks.
Typical application sharing systems operate according to algorithms based on predetermined requirements. For example, in image processing applications it can be desirable to reduce image transfer time. Thus some degradation in image quality may be acceptable to users. In another example, intermediate images are dropped to reduce latency and to keep a viewer's image in real time synchronization with the host image. Needs of the various users frequently are consistent so that the predetermined settings implemented by the algorithms are acceptable. However, in some instances users can have needs that conflict with the assumptions implemented by the algorithms.
The approaches adopted by current application sharing systems generally do not dynamically adapt to the user's needs. Instead, the systems typically utilize optimizations that can be achieved only under certain conditions. If the conditions change, the application sharing system can react in a manner that is adverse to the user's requirements. Moreover, current application sharing systems are generally unable to provide user control to avoid operation inconsistent with the user's needs.
The unpredictable nature of the data being shared can cause additional problems. For example, the type of image compression used to reduce the amount of data sent to the user is important. One image compressor can perform well when sharing a word processor, but might fail to significantly reduce or may even increase the amount data transferred when sharing an image processing application. The following examples demonstrate the needs of various users that can be inconsistent with default operation in typical application sharing systems.
In one example, a doctor sharing a medical image, such as an x-ray image, with a remote colleague over a high speed network is primarily concerned with image quality. There is no need to update the medical image in time. Moreover, the doctor does not want the risk that the colleague may misinterpret the image. Consequently, the latency of the transmission can be ignored. In this instance, a lossless image compression is desired.
In a contrasting example, a software developer sharing a text editor showing source code with an on-site support engineer through a modem does not want unnecessary delays in transmission. Instead of requiring high image quality, the software developer prefers that the text is legible and quickly available to the support engineer for viewing. Thus a lossy image compression is desirable to reduce the data transferred through the modem and any resulting latency.
What is needed is a method for configuring and dynamically adapting an application sharing system to accommodate the requirements of individual users. The present invention satisfies this need and provides additional advantages.